package 正则表达式;
//API搜索Pattern
//正则表达式(matches)的作用
//1、校验字符串是否满足规则
//2、在一段文本中查找满足要求的内容
public class MatesText1 {
    public static void main(String[] args) {
        /* 假如现在要求校验一个qq号码是否正确。
        规则：6位及20位之内，0不能在开头，必须全部是数字。
        先使用目前所学知识完成校验需求
        然后体验一下正则表达式检验。*/
        String qq = "3069028872";
        String qq2 = "3069028872a";
        String qq3 = "03069028872";
        String qq4 = "03069028872a";

        //正则表达式
        String match = "[1-9]\\d{5,19}";

        //方法一，正则表达式
        //[]:表示一个字符取值范围，{5,19}表示\\d（即数字0-9）匹配判断至少5次，不超过19次
        boolean m1 = qq.matches("[1-9]\\d{5,19}");//[1-9]：表示首位字符取值范围为数字1-9
        System.out.println(m1);//输出形式为布尔类型
        boolean m2 = qq2.matches(match);
        System.out.println(m2);
        boolean m3 = qq3.matches("[1-9]\\d{5,19}");
        System.out.println(m3);
        boolean m4 = qq4.matches("[1-9]\\d{5,19}");
        System.out.println(m4);
        System.out.println("-------------------------");

        //方法二，自定义函数
        boolean c1 = checkqq(qq);
        boolean c2 = checkqq(qq2);
        boolean c3 = checkqq(qq3);
        boolean c4 = checkqq(qq4);
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
        System.out.println(c4);
    }

    private static boolean checkqq(String qq) {
        int l = qq.length();
        //0不能在开头
        char a = qq.charAt(0);
        //boolean b = qq.startsWith("0");//直接判断开头是否是0,是则为true
        if (qq.startsWith("0")) {
            return false;
            //6位及20位之内
        } else if (l < 6 || l > 20) {
            return false;
        }
        for (int i = 0; i < l; i++) {
            char c = qq.charAt(i);
            if (c > '9' || c < '0') {
                return false;
            }
        }
        return true;
    }
}
